/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package DA;

import com.toedter.calendar.JDateChooser;
import java.beans.Statement;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Date;
import javax.swing.JOptionPane;

/**
 *
 * @author alejandro
 */
public class DAReportes {
    
    public ResultSet buscarPallets(int idTipoProd,String nombEstado,int idProveedor,Date fRegIni,Date fRegFin,Date fVencIni,Date fVencFin){
        DAConexion bd = new DAConexion();
        Connection con = null;
        ResultSet rs = null;
        Statement s = null; 
    
        String query = "select distinct pallet.idpallet,pallet.fechavencimiento, pallet.fecharegistro,pallet.estado, pallet.cantidad, producto.nombre as nombreProd,tipoproducto.tipo,pallet.idposicionxrack, tipopaleta.nombre , contacto.nombempresa from pallet,producto, tipoproducto, posicionxrack,paleta ,tipopaleta, contacto, productoxcontacto where (producto.idproducto=pallet.idproducto and tipopaleta.idtipopaleta=paleta.idtipopallet and productoxcontacto.idproducto=producto.idproducto and productoxcontacto.idcontacto= contacto.idcontacto and pallet.idpaleta=paleta.idpaleta and tipoproducto.idtipoproducto=producto.idtipoproducto and ((posicionxrack.idposicionxrack=pallet.idposicionxrack) or (pallet.idposicionxrack is null)))";
        
        
        try
        {
            //guardo los datos del perfil
            // and pallet.fecharegistro>=? and pallet.fecharegistro<=? and pallet.fechavencimiento>=? and pallet.fechavencimiento<=?"
            
            if (idTipoProd!=0) query=query+" and producto.idtipoproducto= "+idTipoProd;
            
            
            if (!(nombEstado.equals("TODOS"))) query=query+" and pallet.estado = '"+ nombEstado+"'";
            
            
            if (idProveedor!=0) query=query+" and contacto.idcontacto = "+idProveedor;
                
            if (fRegIni!=null)
            {
                java.sql.Date auxDate= new java.sql.Date(fRegIni.getTime());
                query=query+" and pallet.fecharegistro>= '"+auxDate+"'";
            }
           
            
            if (fRegFin!=null)
            {
                java.sql.Date auxDate= new java.sql.Date(fRegFin.getTime());
                query=query+" and pallet.fecharegistro<= '"+auxDate+"'";
            }
            
            
            if (fVencIni!=null)
            {
                java.sql.Date auxDate= new java.sql.Date(fVencIni.getTime());
                query = query + " and pallet.fechavencimiento>= '"+auxDate+"'";
            }
            
            
            if (fVencFin!=null)
            {
                java.sql.Date auxDate= new java.sql.Date(fVencFin.getTime());
                query = query + " and pallet.fechavencimiento<= '"+auxDate+"'";
            }
           
            //JOptionPane.showMessageDialog(null,query,"Error",JOptionPane.ERROR_MESSAGE);
            
            con = bd.conectar();
            
            PreparedStatement p=con.prepareStatement(query);
            
            rs=p.executeQuery();
            
           
           
            
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null,"Problema al consultar la base de datos"+e.toString(),"Reportes",JOptionPane.ERROR_MESSAGE);
            bd.cierraConexion(con);
            return null;
            
        }
        bd.cierraConexion(con);
        
        return rs;
        
     
    } 
    
       
    
    
    
    public ResultSet buscarTrazabilidadPallet(int codigo,int codigo2, Date FecDe,Date FecHasta){
        
        DAConexion bd = new DAConexion();
        Connection con = null;
        ResultSet rs = null;
        Statement s = null; 
    
        String query = "SELECT  lineamovimiento.idmovimiento,  lineamovimiento.idpallet,pallet.idproducto,   movimiento.fecha,movimiento.hora,producto.nombre as nombProd, movimiento.tipomovimiento,"+
   " tipomovimiento.nombre,movimiento.origen,movimiento.destino,movimiento.fecha,motivomovimiento.idmotivo,motivomovimiento.descripcion FROM pallet, lineamovimiento,producto,  movimiento,"+
  " tipomovimiento,motivomovimiento where pallet.idpallet=lineamovimiento.idpallet and lineamovimiento.idmovimiento=movimiento.idmovimiento and "+
    " tipomovimiento.idtipomovimiento = movimiento.tipomovimiento and motivomovimiento.idmotivo = movimiento.idmotivo and producto.idproducto=pallet.idproducto ";
        
        
        try
        {
            //guardo los datos del perfil
            // and pallet.fecharegistro>=? and pallet.fecharegistro<=? and pallet.fechavencimiento>=? and pallet.fechavencimiento<=?"
            
            if (codigo!=0) query=query+" and pallet.idpallet>= "+codigo;
            
            if (codigo2!=0) query=query+" and pallet.idpallet<= "+codigo2;
            
            if (FecDe!=null)
            {
               // java.sql.Date auxDate= new java.sql.Date(jdcFecIni.getDate().getTime());
                query=query+" and movimiento.fecha>= '"+FecDe+"'";
            }
           
            
            if (FecHasta!=null)
            {
                //java.sql.Date auxDate= new java.sql.Date(jdcFecFin.getDate().getTime());
                query=query+" and movimiento.fecha<= '"+FecHasta+"'";
            }
           
            //JOptionPane.showMessageDialog(null,query,"Error",JOptionPane.ERROR_MESSAGE);
            query=query+ " ORDER BY lineamovimiento.idpallet, movimiento.fecha,movimiento.hora";
            
            con = bd.conectar();
            
            PreparedStatement p=con.prepareStatement(query);
            
            rs=p.executeQuery();
            
           
           
            
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null,"Problema al consultar la base de datos"+e.toString(),"Reportes",JOptionPane.ERROR_MESSAGE);
            bd.cierraConexion(con);
            return null;
            
        }
        bd.cierraConexion(con);
        
        return rs;
        
     
    } 
    
    
    
    public ResultSet buscarMermas(int codigo,int idTipoProd,JDateChooser jdcFecIni,JDateChooser jdcFecFin){
    
    
        DAConexion bd = new DAConexion();
        Connection con = null;
        ResultSet rs = null;
        Statement s = null;
    
        String query = "SELECT movimiento.idmovimiento,movimiento.fecha, movimiento.hora, movimiento.origen, "+
        " tipomovimiento.nombre, motivomovimiento.descripcion, pallet.cantidad,producto.idproducto, tipoproducto.tipo, pallet.fechavencimiento,producto.nombre as nombreProd  FROM "+ 
        "tipomovimiento, movimiento, motivomovimiento, lineamovimiento, pallet, producto, tipoproducto "+
        "where  tipomovimiento.idtipomovimiento=movimiento.tipomovimiento and motivomovimiento.idmotivo = movimiento.idmotivo and "+
       " ((motivomovimiento.idmotivo = 2)or(motivomovimiento.idmotivo = 3)) and tipomovimiento.idtipomovimiento = 1 and lineamovimiento.idmovimiento = movimiento.idmovimiento and "+
        " lineamovimiento.idpallet = pallet.idpallet and producto.idproducto = pallet.idproducto and tipoproducto.idtipoproducto = producto.idtipoproducto";
  
         try
        {
            //guardo los datos del perfil
            // and pallet.fecharegistro>=? and pallet.fecharegistro<=? and pallet.fechavencimiento>=? and pallet.fechavencimiento<=?"
            
            if (codigo!=0) query=query+" and producto.idproducto= "+codigo;
            
            if (idTipoProd > 0)
            query += " AND tipoproducto.idtipoproducto = " + idTipoProd;
            
             if (jdcFecIni.getDate()!=null)
            {
                java.sql.Date auxDate= new java.sql.Date(jdcFecIni.getDate().getTime());
                query=query+" and movimiento.fecha>= '"+auxDate+"'";
            }
           
            
            if (jdcFecFin.getDate()!=null)
            {
                java.sql.Date auxDate= new java.sql.Date(jdcFecFin.getDate().getTime());
                query=query+" and movimiento.fecha<= '"+auxDate+"'";
            }
            //JOptionPane.showMessageDialog(null,query,"Error",JOptionPane.ERROR_MESSAGE);
            
            con = bd.conectar();
            
            PreparedStatement p=con.prepareStatement(query);
            
            rs=p.executeQuery();
            
           
           
            
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null,"Problema al consultar la base de datos"+e.toString(),"Reportes",JOptionPane.ERROR_MESSAGE);
            bd.cierraConexion(con);
            return null;
            
        }
        bd.cierraConexion(con);
        
    
    
        return rs;
    
    }

    public ResultSet buscarLogs(String validarSqlInjection, JDateChooser jdcFecDe, JDateChooser jdcFecHasta) {
      DAConexion bd = new DAConexion();
        Connection con = null;
        ResultSet rs = null;
        Statement s = null;
    
        String query = "select idlogbd,usuario.idusuario,fecha,accion,usuario,estado from logbd, usuario where logbd.idusuario=usuario.idusuario";
  
         try
        {
            //guardo los datos del perfil
            // and pallet.fecharegistro>=? and pallet.fecharegistro<=? and pallet.fechavencimiento>=? and pallet.fechavencimiento<=?"
                    
             if (jdcFecDe.getDate()!=null)
            {
                java.sql.Date auxDate= new java.sql.Date(jdcFecDe.getDate().getTime());
                query=query+" and fecha>= '"+auxDate+"'";
            }
           
            
            if (jdcFecHasta.getDate()!=null)
            {
                java.sql.Date auxDate= new java.sql.Date(jdcFecHasta.getDate().getTime());
                query=query+" and fecha<= '"+auxDate+"'";
            }
            //JOptionPane.showMessageDialog(null,query,"Error",JOptionPane.ERROR_MESSAGE);
            
            con = bd.conectar();
            
            PreparedStatement p=con.prepareStatement(query);
            
            rs=p.executeQuery();
            
           
           
            
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null,"Problema al consultar la base de datos"+e.toString(),"Reportes",JOptionPane.ERROR_MESSAGE);
            bd.cierraConexion(con);
            return null;
            
        }
        bd.cierraConexion(con);
        
    
    
        return rs;
    }
    
}
